﻿using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Script.Serialization;
using AppWeb.Componentes.DAReclamos.Model;
using BL = AppWeb.Componentes.BLReclamos;

namespace AppWeb.Componentes.Reclamos.Areas.AtencionReclamos.Controllers
{
    public class AdministradorController : Controller
    {

        public ActionResult Index()
        {
            Response.Cache.SetNoStore();
            Response.Cache.SetAllowResponseInBrowserHistory(false);
            if (Session["Usuario"] == null)
            {
                Session.Clear();
                return RedirectToAction("Index", "Home", new { area = "" });
            }
            return View();
        }

        public ActionResult ReclamoListado(int? punto_venta_id, int? tipo_id, int? estado_id, DateTime? fecha_atencion_inicio)
        {
            ViewBag.ListadoReclamos = BL.BLReclamo.ListadoReclamoAdministrador(punto_venta_id, tipo_id, estado_id, fecha_atencion_inicio);
            ViewBag.ListadoAnalistas = BL.BLReclamo.ListadoAnalistas();
            return PartialView();
        }

        public ActionResult AsignaAnalistaAReclamo(int reclamo_id, int analista_id)
        {
            bool exito = false; 
            var reclamo = BL.BLReclamo.ObtenerReclamo(reclamo_id);

            reclamo.analista_id = analista_id;
            reclamo.estado_id = (analista_id == 1) ? 1 : 2;

            reclamo = BL.BLReclamo.Registrar(reclamo);
            reclamo = BL.BLReclamo.ObtenerReclamo(reclamo.id);

            if (reclamo != null)
            {
                exito = true;
            }

            var result = new[] { exito.ToString(CultureInfo.InvariantCulture), reclamo.estado_reclamo_nombre };
            return Json(result, JsonRequestBehavior.AllowGet);

        }

        public ActionResult EliminarReclamo(int reclamo_id)
        {
            bool exito = false;
            var reclamo = BL.BLReclamo.ObtenerReclamo(reclamo_id);

            reclamo.estado_id = (reclamo.estado_id != 5) ? 5 : 1;
            reclamo.analista_id = (reclamo.estado_id != 5) ? reclamo.analista_id : 1;

            reclamo = BL.BLReclamo.Registrar(reclamo);
            reclamo = BL.BLReclamo.ObtenerReclamo(reclamo.id);

            if (reclamo != null)
            {
                exito = true;
            }

            var result = new[] { exito.ToString(CultureInfo.InvariantCulture), reclamo.estado_reclamo_nombre };
            return Json(result, JsonRequestBehavior.AllowGet);

        }

        public ActionResult VerReportes()
        {
            return PartialView();
        }

    }
}
